#!/usr/bin/env python
# $Id: netdot2csv.py df54dec975f4 2012/09/09 20:22:40 pgurumur $
# Copyright (c) 2012 Prabhu Gurumurthy <pgurumur@gmail.com>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#

__version__  = "$Revision: df54dec975f4 $"
__author__   = "$Author: pgurumur $"
__modified__ = "$Date: 2012-09-09 20:22:40Z $"

import ConfigParser
import optparse
import os
import sys

from venya.lib import cmdparser
from venya.lib import exception
from venya.lib import ip
from venya.lib import sql
from venya.lib import stdlib

class netdot2csv(cmdparser.GetOpt):
   option_list = (
         optparse.make_option("-c", "--config", type = "str",
            help = "DB configuration file, default: sql.cfg",
            default = "sql.cfg", dest = "config"),
   ) + cmdparser.GetOpt.option_list
   
   def __init__(self, **kwargs):
      super(netdot2csv, self).__init__(**kwargs)
      self._sql = None

   def handle(self):
      (options, args) = self.parse()
      if options.config:
         try:
            self._cfg = config.Lexer(options.config)
         except exception.LexerError as err:
            self.error(err)
         else:
            dbName = self._cfg.Netdot

      """
      select concat(rr.name, ".", zone.name) as name, device.serialnumber, product.name product, entity.name manufacturer, producttype.name type, inet_ntoa(ipblock.address) address, site.name site, (select deviceattr.value from deviceattr left join deviceattrname on deviceattrname.id = deviceattr.name where deviceattrname.name = "console_ip" and deviceattr.device = device.id) consoleip, (select deviceattr.value from deviceattr left join deviceattrname on deviceattrname.id = deviceattr.name where deviceattrname.name = "console_server" and deviceattr.device = device.id) consoleserver, device.os from device left join rr on rr.id = device.name left join zone on zone.id = rr.zone left join product on product.id = device.product left join entity on entity.id = product.manufacturer left join producttype on producttype.id = product.type left join ipblock on ipblock.id = device.snmp_target left join site on site.id = device.site order by site.name;
      """
      
      try:
         if dbName:
            self._sql = sql.mysql(dbName.dbname, dbName.dbhost,
                  dbName.dbuser, dbName.dbpass)
      except exception.SQLError as err:
         self.error(err)
      else:
         self._device = self._sql.device


      for ix in self._device.q.all():
         retval = None

